package com.quanyan.place.service;

import java.math.BigDecimal;
import java.util.List;

import com.quanyan.place.entity.*;
import com.quanyan.place.entity.apireq.ReqOrderHistory;
import com.quanyan.place.entity.apiresp.RespBarCodeInfo;
import com.quanyan.place.entity.apiresp.RespPlacePrintInfo;
import com.quanyan.place.entity.vo.PlaceFinanceAuditVo;
import com.quanyan.place.entity.vo.PlacePrintVo;

/**
 * Created by youxiaojia on 2017/2/9.
 */
//解决循环调用
public interface PlaceOrderUtilService {
    /** 插入支付退款订单流水 **/
    void insertOrderHistory(ReqOrderHistory reqOrderHistory) throws Exception;

    /** 插入支付订单流水 [伪批量,为发送短信新增]**/
    void shoppingCartOrderInsertOrderHistory(List<ReqOrderHistory> reqOrderHistoryList) throws Exception;

    /** 订单转换订单流水
     * @param tbBizPlaceOrder
     * @param receiveAmount 实收金额 (排除 鸟蛋 优惠券 调价 会员优惠 等优惠方式)
     * @param businessType //交易类型：0：支付 1：退款
     * @param refundType //0：全额 1：部分 退款
     * @return
     */
    ReqOrderHistory tbBizPlaceOrder2ReqOrderHistory(TbBizPlaceOrder tbBizPlaceOrder, BigDecimal receiveAmount, byte businessType , byte refundType);

    /** 次卡购买门票订单流水
     * @param tbBizPlaceOrder
     * @param ticketCount
     * @param businessType
     * @param refundType
     * @return
     */
    ReqOrderHistory memberTicket2ReqOrderHistory(TbBizPlaceOrder tbBizPlaceOrder, int ticketCount, byte businessType , byte refundType);

    /** 修改场馆订单运营方式 **/
    void updatePlaceOrderBusinessMode(Integer placeId, Byte businessMode);

    /**
     * 小票机打印返回对象
     * @param placePrintVo
     * @return
     */
    RespPlacePrintInfo getPrintOrderInfo(PlacePrintVo placePrintVo);

    /**
     * 点击打印小票
     * @param placeOrderId
     * @return
     */
    RespPlacePrintInfo printOrderInfo(String placeOrderId);
    
    /**
     * 打印包场小票
     * @param placeOrderId
     * @return
     */
    RespPlacePrintInfo printBookAllOrderInfo(String placeOrderId);
    /**
     * 获取pos 银联条形码信息
     * @return
     */
    RespBarCodeInfo getPosUnionPayInfo(String placeOrderId);

    /** 订单明细转换订单流水
     * @param tbBizPlaceOrder
     * @param businessType //交易类型：0：支付 1：退款
     * @param refundType //0：全额 1：部分 退款
     * @return
     */
    List<ReqOrderHistory> tbBizPlaceOrderItem2ReqOrderHistory(TbBizPlaceOrder tbBizPlaceOrder,
                                                              List<TbBizPlaceOrderItem> tbBizPlaceOrderItemList,
                                                              byte businessType ,
                                                              byte refundType ,
                                                              TbBizPlaceMemberCard tbBizPlaceMemberCard);

    /** 对公转账订单转换审核记录 **/
    PlaceFinanceAuditVo tbBizPlaceOrder2PlaceFinanceAuditVo(TbBizPlaceOrder tbBizPlaceOrder);

    /** 对公转账会员交易记录转换审核记录 **/
    PlaceFinanceAuditVo tbBizPlaceMemberOpHistory2PlaceFinanceAuditVo(TbBizPlaceMemberOpHistory tbBizPlaceMemberOpHistory);

    /** 商家端销售计划状态异常情况释放 **/
    void releaseSalePlanStatus(List<TbBizPlaceUnitSalePlan> releaseSalePlanList);
}
